// 下拉框选物种
//  document.querySelectorAll('.taxonomy-node').forEach(node => {
//     node.addEventListener('click', () => {
//         const input = document.querySelector('.search-bar input');
//         input.value = node.innerText.replace('▼', '').trim();
//     });
// });


// // 滑动条时间显示
// const yearSlider = document.querySelector('input[type="range"]');
// yearSlider.addEventListener('input', (e) => {
//     e.target.nextElementSibling.textContent = e.target.value;
// });


document.addEventListener('DOMContentLoaded', function() {
    document.querySelector('.search-bar button').addEventListener('click', () => {
        const input = document.querySelector('.search-bar input');
        const animals_type = input.value.trim();
        if (animals_type) {
            get_paper_id(animals_type);
        } else {
            get_paper_id('rabbit');
        }
    });
    document.getElementById('pdfViewer').addEventListener('click', (e) => {
        if (e.target === document.getElementById('pdfViewer')) {
            closePDF();
        }
        });
  
    // 提交评论
      // 事件委托到 document
      document.getElementById('submitCommentButton').addEventListener('click', function() {
        const textarea = document.querySelector('#commentForm textarea');
        const newComment = textarea.value.trim();
        const file_id = document.getElementById('pdfFrame').getAttribute('data-file-id');

    
        if (!newComment) {
            showErrorMessage('评论不能为空！');
            return;
        }
        // 确保传递正确的参数（例如实际file_id）
        const user_id = localStorage.getItem('ouruserid'); 
        const user_name = localStorage.getItem('ourusername');
        add_comment(file_id,user_id, user_name, newComment, null);
        textarea.value = ''; // 清空输入
    });

    const speciesSearch = document.getElementById('speciesSearch');
    const speciesList = document.getElementById('speciesList');

    // 示例物种数据，实际应用中可能从API获取
    const speciesData = ['American Robin', 'Himantopus himantopus', 'Pied Avocet', 'Wildebeest', 'zebra'];

    // 填充物种列表
    function populateSpeciesList(speciesArray) {
        speciesList.innerHTML = '';
        speciesArray.forEach(species => {
            const li = document.createElement('li');
            li.className = 'species-item';
            li.textContent = species;
            li.addEventListener('click', function() {
                speciesSearch.value = species;
                // 这里可以添加选择物种后的处理逻辑，例如触发搜索或筛选等
                get_paper_id(species); // 假设有一个函数根据物种名称获取论文ID
            });
            speciesList.appendChild(li);
        });
    }

    // 初始加载所有物种
    populateSpeciesList(speciesData);

    // 搜索功能
    speciesSearch.addEventListener('input', function() {
        const searchText = this.value.toLowerCase();
        const filteredSpecies = speciesData.filter(species =>
            species.toLowerCase().includes(searchText)
        );
        populateSpeciesList(filteredSpecies);
    });

   
});





// 关闭PDF查看器
function closePDF() {
    document.getElementById('pdfViewer').style.display = 'none';
    document.getElementById('pdfFrame').src = '';
    document.removeEventListener('keydown', handleEscape);
}

// ESC键关闭
function handleEscape(event) {
    if (event.key === 'Escape') closePDF();
}


// 如果要动态展示卡片，可以使用以下方法
function dispPaperCard(paperInfo) {
    const resultsDiv = document.getElementById('results');
    resultsDiv.innerHTML = '';
    paperInfo.forEach(paper => {
        addPaperCard(paper);
    });
}
//动态添加卡片
function addPaperCard(paperInfo) {
    let newCard = document.createElement('div');
    const publish_date=paperInfo.publication_date.split('T')[0];
    newCard.className = 'paper-card';
    newCard.innerHTML = `
        <h4><span class="species-highlight">${paperInfo.title}</span></h4>
        <p class="authors-highlight">${paperInfo.author}</p>
        <p class="abstract">${paperInfo.abstract}</p>
        <div class="stats">
            <span class="publication-date">${publish_date}</span>
            <span class="publisher">${paperInfo.publisher}</span>
            <span class="paper-file-id">${paperInfo.file_id}</span>
        </div>
    `;
      // 直接绑定点击事件
    newCard.addEventListener('click', () => {
        showPDF(paperInfo.file_id);
    });
    document.getElementById('results').appendChild(newCard);
}
function renderComments(comments) {
    const commentsList = document.getElementById('commentsList');
    commentsList.innerHTML = ''; // 清空现有评论
    console.log('正在渲染评论:', comments);

    comments.forEach(comment => {
        const commentElement = document.createElement('div');
        commentElement.className = 'comment-item';
        
        // 在用户名旁边添加星号，如果用户是专家
        let commenterNameDisplay = `${comment.commenter_name || '匿名用户'}`;
        console.log('评论', comment);
        console.log('评论者:', comment.is_expert);
        if (comment.is_expert) { // 假设有一个 is_expert 字段标识专家
            commenterNameDisplay += ' ★'; // 添加星号
        }

        commentElement.innerHTML = `
            <div class="comment-header">
                <span class="commenter-name">${commenterNameDisplay}</span>
                <span class="comment-time">${formatDateTime(comment.created_at)}</span>
            </div>
            <div class="comment-content">${comment.comment_text}</div>
        `;
        commentsList.appendChild(commentElement);
    });
}
function formatDateTime(dateTimeString) {
    const date = new Date(dateTimeString);
    return date.toLocaleString();
}

///////////////////// 以下是API接口实现 /////////////////////
// 显示PDF查看器
async function showPDF(file_id) {
     // 转成 Blob 并渲染到 iframe
    file_id = file_id.toString();
    const viewer = document.getElementById('pdfViewer');
    const frame = document.getElementById('pdfFrame');
    try{
        const response = await fetch(`http://localhost:4000/knowledge_git/getfile/${file_id}`, {
            method: 'GET',
            headers: {
                'Accept': 'application/json',  // 指定接受 JSON 响应
            }
        });

        if (!response.ok) {
            throw new Error(`HTTP error! Status: ${response.status}`);
        }

        // 解析 JSON 响应
        const json = await response.json();
        if (json.code !== 200) {
            throw new Error(`API error: ${json.msg}`);
        }

        // 提取缓冲区数据
        const bufferData = json.data.data;
        // 将缓冲区数据转换为 Uint8Array
        const uint8Array = new Uint8Array(bufferData);
        // 创建 Blob 对象
        const blob = new Blob([uint8Array], { type: 'application/pdf' });
        // 创建对象 URL
        const url = URL.createObjectURL(blob);
        // 设置 iframe 的 src
        viewer.style.display = 'block';
        frame.src = url + '#view=FitH';
        frame.setAttribute('data-file-id', file_id);  // 关键修改：保存 file_id
        document.addEventListener('keydown', handleEscape);
        get_paper_comment(file_id);
        // initComments(url);
    }
    catch(error){
        console.error('Error fetching file:', error);
    }
}   
    
async function get_paper_comment(file_id) {
    try {
        const response = await fetch('http://localhost:4000/knowledge_git/getcomments/'+file_id.toString(), {
        method: 'GET',
        headers: {
            'Content-Type': 'application/json'
        },
        });

        // 解析 JSON
        const jsonData = await response.json(); 
        console.log('评论完整响应:', jsonData);
        code = jsonData.code;
        if(code==200){
            const comments_array=jsonData.data;
            //显示评论
            console.log('获取到的评论：',comments_array);
            renderComments(comments_array);
        }
        else{
            alert(jsonData.msg);
        }
    } catch (error) {
        console.error('Error fetching papers:', error);
    }
}

async function get_paper_id(animals_type) {
    try {
        const response = await fetch('http://localhost:4000/knowledge_git/getpapers', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            animal_type: animals_type
        })
        });
    // 解析 JSON
        const jsonData = await response.json(); 
        console.log('完整响应:', jsonData);
        code = jsonData.code;
        if(code==200){
            const papers=jsonData.data;
            console.log('jsonData.data:',jsonData.data);
            dispPaperCard(papers);
            return papers;
        }
        else{
            alert(jsonData.msg);
        }

    } catch (error) {
        console.error('Error fetching papers:', error);
    }
}

//上传对应文献的评论的API接口实现
function add_comment(file_id, user_id,commenter_name,conmment_text,parent_comment_id) {
    //这里是请求paper_check_api的具体实现，这里假设是用fetch请求，并返回一个json数据    
    const token = localStorage.getItem('ourtoken');
    if (!token) {
        alert('请先登录！');
        return;
    }
    const role=localStorage.getItem('ouruserrole');  
    var is_expert=false; 
    if(role=='专家用户'){
        is_expert=true;
    }
    fetch('http://localhost:4000'+'/knowledge_git/addcomment', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + token
      },
      body: JSON.stringify({
        file_id: file_id,
        user_id: user_id,
        commenter_name: commenter_name,
        comment_text: conmment_text,
        parent_comment_id: parent_comment_id,
        is_expert: is_expert
      })
    })
     .then(response => response.json())
     .then(data => {
        //这里是请求成功的回调函数，参数为json数据
        console.log(data);
        alert(data.msg);
        if(data.code==200){
            //刷新评论列表
            get_paper_comment(file_id);
        }
      })
     .catch(error => {
       console.error(error)
      });
}
